T(RN,          0x0p+0,          0x0p+0,          0x0p+0,          0x0p+0,          0x0p+0, 0)
T(RN,         -0x0p+0,         -0x0p+0,         -0x0p+0,          0x0p+0,          0x0p+0, 0)
T(RN,         -0x0p+0,         -0x0p+0,          0x0p+0,          0x0p+0,          0x0p+0, 0)
T(RN,         -0x0p+0,          0x0p+0,         -0x0p+0,         -0x0p+0,          0x0p+0, 0)
T(RN,          0x0p+0,         -0x0p+0,         -0x0p+0,         -0x0p+0,          0x0p+0, 0)
T(RN,         -0x0p+0,          0x0p+0,          0x0p+0,          0x0p+0,          0x0p+0, 0)
T(RN,          0x0p+0,         -0x0p+0,          0x0p+0,          0x0p+0,          0x0p+0, 0)
T(RN,          0x0p+0,          0x0p+0,         -0x0p+0,          0x0p+0,          0x0p+0, 0)
T(RN,          0x0p+0,          0x0p+0,             nan,             nan,          0x0p+0, 0)
T(RN,          0x0p+0,             nan,          0x0p+0,             nan,          0x0p+0, 0)
T(RN,             nan,          0x0p+0,          0x0p+0,             nan,          0x0p+0, 0)
T(RN,          0x0p+0,          0x0p+0,             inf,             inf,          0x0p+0, 0)
T(RN,          0x0p+0,             inf,          0x0p+0,             nan,          0x0p+0, INVALID)
T(RN,             inf,          0x0p+0,          0x0p+0,             nan,          0x0p+0, INVALID)
T(RN,          0x0p+0,          0x0p+0,            -inf,            -inf,          0x0p+0, 0)
T(RN,          0x0p+0,            -inf,          0x0p+0,             nan,          0x0p+0, INVALID)
T(RN,            -inf,          0x0p+0,          0x0p+0,             nan,          0x0p+0, INVALID)
T(RN,          0x1p+0,             inf,             inf,             inf,          0x0p+0, 0)
T(RN,          0x1p+0,             inf,            -inf,             nan,          0x0p+0, INVALID)
T(RN,          0x1p+0,            -inf,            -inf,            -inf,          0x0p+0, 0)
T(RN,          0x1p+0,            -inf,             inf,             nan,          0x0p+0, INVALID)
T(RN,         -0x1p+0,             inf,             inf,             nan,          0x0p+0, INVALID)
T(RN,         -0x1p+0,             inf,            -inf,            -inf,          0x0p+0, 0)
T(RN,         -0x1p+0,            -inf,            -inf,             nan,          0x0p+0, INVALID)
T(RN,         -0x1p+0,            -inf,             inf,             inf,          0x0p+0, 0)
T(RN,          0x1p+0,          0x1p+0,             inf,             inf,          0x0p+0, 0)
T(RN,          0x1p+0,          0x1p+0,            -inf,            -inf,          0x0p+0, 0)
T(RN,             inf,            -inf,          0x1p+0,            -inf,          0x0p+0, 0)
T(RN,            -inf,            -inf,          0x1p+0,             inf,          0x0p+0, 0)
T(RN,             inf,             inf,             nan,             nan,          0x0p+0, 0)
T(RN,             inf,             nan,             inf,             nan,          0x0p+0, 0)
T(RN,             nan,             inf,             inf,             nan,          0x0p+0, 0)
// TODO: invalid is optional
T(RN,             inf,          0x0p+0,             nan,             nan,          0x0p+0, INVALID)
T(RN,          0x0p+0,             inf,             nan,             nan,          0x0p+0, INVALID)
T(RN,            -inf,          0x0p+0,             nan,             nan,          0x0p+0, INVALID)
T(RN,          0x0p+0,            -inf,             nan,             nan,          0x0p+0, INVALID)
T(RN,        0x1p-120,        0x1p-120,        0x1p-149,        0x1p-149,        -0x1p-91, INEXACT|UNDERFLOW)
T(RN,          0x1p+0,          0x1p+0,         -0x1p+0,          0x0p+0,          0x0p+0, 0)
T(RN,          0x1p+0,         -0x1p+0,          0x1p+0,          0x0p+0,          0x0p+0, 0)
T(RN,         -0x1p+0,         -0x1p+0,         -0x1p+0,          0x0p+0,          0x0p+0, 0)
T(RD,          0x1p+0,          0x1p+0,         -0x1p+0,         -0x0p+0,          0x0p+0, 0)
T(RD,          0x1p+0,         -0x1p+0,          0x1p+0,         -0x0p+0,          0x0p+0, 0)
T(RD,         -0x1p+0,         -0x1p+0,         -0x1p+0,         -0x0p+0,          0x0p+0, 0)
T(RD,        0x1p-120,        0x1p-120,        0x1p-149,        0x1p-149,        -0x1p-91, INEXACT|UNDERFLOW)
T(RU,        0x1p-120,        0x1p-120,        0x1p-149,        0x1p-148,          0x1p+0, INEXACT|UNDERFLOW)
T(RZ,        0x1p-120,        0x1p-120,        0x1p-149,        0x1p-149,        -0x1p-91, INEXACT|UNDERFLOW)
T(RN,       -0x1p-100,     0x1.001p-49,        0x1p-126, 0x1.fffffcp-127,         0x1p-12, INEXACT|UNDERFLOW)
T(RU,       -0x1p-100,     0x1.001p-49,        0x1p-126, 0x1.fffffcp-127,         0x1p-12, INEXACT|UNDERFLOW)
T(RD,       -0x1p-100,     0x1.001p-49,        0x1p-126, 0x1.fffff8p-127,     -0x1.ffep-1, INEXACT|UNDERFLOW)
T(RZ,       -0x1p-100,     0x1.001p-49,        0x1p-126, 0x1.fffff8p-127,     -0x1.ffep-1, INEXACT|UNDERFLOW)
T(RN, -0x1.26524ep-54, -0x1.cb7868p+11,  0x1.d10f5ep-29,  0x1.d1179ep-29,         -0x1p-1, INEXACT)
T(RU, -0x1.26524ep-54, -0x1.cb7868p+11,  0x1.d10f5ep-29,   0x1.d117ap-29,          0x1p-1, INEXACT)
T(RD, -0x1.26524ep-54, -0x1.cb7868p+11,  0x1.d10f5ep-29,  0x1.d1179ep-29,         -0x1p-1, INEXACT)
T(RZ, -0x1.26524ep-54, -0x1.cb7868p+11,  0x1.d10f5ep-29,  0x1.d1179ep-29,         -0x1p-1, INEXACT)
// double precision x*y+z is a half-way float
T(RN,   0x1.000002p+0,   0x1.fffffep+0,  0x1.fffffep-47,          0x1p+1,         -0x1p-1, INEXACT)
T(RN,   0x1.000002p+0,   0x1.fffffep+0,         0x1p-46,          0x1p+1,         -0x1p-1, INEXACT)
T(RN,   0x1.000002p+0,   0x1.fffffep+0,  0x1.000002p-46,   0x1.000002p+1,          0x1p-1, INEXACT)
T(RN,   0x1.000002p+0,  -0x1.fffffep+0, -0x1.fffffep-47,         -0x1p+1,          0x1p-1, INEXACT)
T(RN,   0x1.000002p+0,  -0x1.fffffep+0,        -0x1p-46,         -0x1p+1,          0x1p-1, INEXACT)
T(RN,   0x1.000002p+0,  -0x1.fffffep+0, -0x1.000002p-46,  -0x1.000002p+1,         -0x1p-1, INEXACT)
T(RN,   0x1.000004p+0,   0x1.fffffep+0,  0x1.fffffep-46,   0x1.000002p+1,         -0x1p-1, INEXACT)
T(RN,   0x1.000004p+0,   0x1.fffffep+0,         0x1p-45,   0x1.000004p+1,          0x1p-1, INEXACT)
T(RN,   0x1.000004p+0,   0x1.fffffep+0,  0x1.000002p-45,   0x1.000004p+1,          0x1p-1, INEXACT)
T(RN,   0x1.000004p+0,  -0x1.fffffep+0, -0x1.fffffep-46,  -0x1.000002p+1,          0x1p-1, INEXACT)
T(RN,   0x1.000004p+0,  -0x1.fffffep+0,        -0x1p-45,  -0x1.000004p+1,         -0x1p-1, INEXACT)
T(RN,   0x1.000004p+0,  -0x1.fffffep+0, -0x1.000002p-45,  -0x1.000004p+1,         -0x1p-1, INEXACT)
